package com.example.sandbox.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * Service基类
 *
 * @author @南皇 nanhuang
 * @date 2020/10/13 14:29
 * @since 1.0.0
 */
@SuppressWarnings("all")
public interface SuperService<T> extends IService<T> {

    default QueryWrapper<T> queryWrap(T t) {
        return Wrappers.<T>query(t);
    }

    default LambdaQueryWrapper<T> lambdaQueryWrap(T t) {
        return Wrappers.<T>lambdaQuery(t);
    }

    default LambdaQueryWrapper<T> lambdaQueryWrap() {
        return Wrappers.<T>lambdaQuery();
    }

    default UpdateWrapper<T> updateWrap() {
        return Wrappers.<T>update();
    }

    default UpdateWrapper<T> updateWrap(T t) {
        return Wrappers.<T>update(t);
    }

    default LambdaUpdateWrapper<T> lambdaUpdateWrap(T t) {
        return Wrappers.<T>lambdaUpdate(t);
    }

    default String incrementSql(String column, Number num) {
        return new StringBuilder(column).append("=").append(column).append("+").append(num).toString();
    }

    default String decreaseSql(String column, Number num) {
        return new StringBuilder(column).append("=").append(column).append("-").append(num).toString();
    }

}
